<?php

namespace DesignModel\Iterator;

use DesignModel\Factory;

/**
 * Created by PhpStorm.
 * User: 554665488
 * Date: 2018-6-21
 * Time: 10:54
 * @description: 实现迭代器 遍历一个聚合对象集合的所有元素
 * @Author: yfl
 * @QQ 554665488
 */
class AllUser implements \Iterator
{
    protected $ids;
    protected $data = array();
    protected $index;//当前的索引

    public function __construct()
    {
        $mysqli = Factory::getMysqli();
        $mysqli->connect('127.0.0.1', 'root', 'Abc123!Abc', 'test');
        $res = $mysqli->query('select id from user');
        $this->ids = $res->fetch_all(MYSQLI_ASSOC);
    }

    //当前的数据  （查数据）第三步
    public function current()
    {
        echo '3';
        // TODO: Implement current() method.
        $id = $this->ids[$this->index]['id'];
        return  Factory::getUser($id);
    }


    //首先重置 将指针移动到开头 第一步执行
    public function rewind()
    {
        echo '1';
        return $this->index = 0;
        // TODO: Implement rewind() method.
    }
    //验证当前的元素是否有效 第二步执行  判断当前的index 是否小于 一共的元素 假如数据库有5条记录  当$index = 5的时候 （失效）不再去查数据
    public function valid()
    {
        echo '2';
        // TODO: Implement valid() method.
        return $this->index < count($this->ids);
    }

    //当前的key 第五个步 获取当前的索引
    public function key()
    {
        echo '4';
        // TODO: Implement key() method.
        return $this->index;
    }
    //第四步 将索引值++
    public function next()                   //12345 2345 2345 2
    {
        echo '5';
        $this->index++;
        // TODO: Implement next() method.
    }

}